package com.zkingsoft.plugin.util;
import java.lang.reflect.ParameterizedType;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;


/**
 * 针对ssh项目提供的一些实用性的方法。
 * @author JiangYouYao
 *
 */
public class SSHUtil {
	
	/**
	 * @Description: 获得ssh项目中的spring的容器
	 * @param request 当前项目对应的WebApplicationContext对象
	 * @Return: WebApplicationContext	
	 * @Author: JiangYouYao
	 * @Version: V1.00 
	 * @Create Date: 2014-8-31 
	 */
	public static WebApplicationContext getApplication(HttpServletRequest request){
		return WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
	}
	
	
	/**
	 * 获得web资源的绝对路径
	 * @author JiangYouYao
	 * @date   2014年10月14日-上午8:31:01
	 * @param request
	 * @param path
	 * @return
	 */
	public static String getResourceRealPath(HttpServletRequest request ,String path){
		return request.getSession().getServletContext().getRealPath(path);
	}
	
	
	/**
	 * @Description: 获得该类的泛型类型
	 * @param Class
	 * @Return: Class 泛型的类型
	 * @Author: JiangYouYao
	 * @Version: V1.00 （版本号1.0)
	 * @Create Date: 2014-8-12 （创建日期）
	 */
	@SuppressWarnings("rawtypes")
	public static Class getClass(Class clazz) {
		// 泛型转换
		ParameterizedType pt = (ParameterizedType) clazz.getGenericSuperclass();
		return (Class) pt.getActualTypeArguments()[0];
	}
	
	
}
